Vou, de forma simples, mostrar como se pode redimensionar e reduzir a qualidade de uma imagem em php. Temos de definir o caminho para a imagem origem, que pode ser uma url ou um directório num servidor, depois definimos a percentagem final e a qualidade pretendida. Temos de definir também o directório da imagem destino. No caso de o destino ser o ecrã é necessário fazer as alterações indicadas no programa.
<?
//ini_set('memory_limit', '200M');
//**** DADOS A ALTERAR PELO UTILIZADOR***
$filename = 'imagem_xxx.jpg';
$filename_destino = 'imagem_destino_xxx.jpg';
$imagem_destino='/home/user_xxx/public_html/directório_xxx/imagem_destino_xxx.jpg';
$percentagem = 0.2; //
$qualidade = 75; // 100 = qualidade total e 50= metade
//**** DADOS A ALTERAR PELO UTILIZADOR***
//---------------- informar caminho de destino da imagem --------
//--se ecrâ
//header('Content-Type: image/jpeg');
//-- se ficheiro
// --------------- informar caminho de destino da imagem -----------
//-- Dimensões e tipo de imagem ---------
list($width, $height, $type_x) = getimagesize($filename);
$new_width = $width * $percentagem ;
$new_height = $height * $percentagem ;
switch ($type_x)
{
case(1): $type="gif";
break;
case(2): $type="jpg";
break;
case(3): $type="png";
break;
default: echo("Tipo inválido");
}
// 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(orden de bytes intel), 8 = TIFF(orden de bytes motorola), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF, 15 = WBMP, 16 = XBM.
//-- Dimensões e tipo de imagem ---------
// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
if ($type=='jpg') $image = imagecreatefromjpeg($filename);
if ($type=='gif') $image = imagecreatefromgif($filename);
if ($type=='png') $image = imagecreatefrompng($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
//-- Output
//--SE ECRÂ
// imagejpeg($image_p, null, 100);
//--SE FICHEIRO
if ($type=='jpg') imagejpeg($image_p, $imagem_destino, $qualidade);
if ($type=='gif') imagegif($image_p, $imagem_destino, $qualidade);
if ($type=='png') imagepng($image_p, $imagem_destino, $qualidade);
?>





